#  把重复代码封装成一段代码块方便调用

# 声明函数
# def test1():
#     print("test1")
# 调用函数
# test1()

# 函数参数
# 位置参数，默认参数，不定长参数，键值对参数
# def test1(a, b):
#     print(a + b)
# test1(1,2)


# 默认参数必须写在后面
# def test1(a, b, c=1):
#     print(a + b + c)
#
# test1(1, 2)
# test1(1, 2, 3)

# 不定长参数
# def test1(a, b, *args):
#     print(a + b)
#     print(args)


# test1(1, 2, 3, 4, 5, 6, 7, 8, 8, 9)
# t = (3, 4, 5, 6, 7, 8, 8, 9)
# test1(1, 2, *t)  # 拆包

# 键值对参数
def test1(a, b, **kwargs):
    print(a + b)
    print(kwargs)


# test1(1, 2, c=3, d=4)
# d = {"c": 3, "d": 4}
# test1(1, 2, **d)  # 拆包


# def test5(a, b, c=3, *args, **kwargs):
#     print(a, b, c, args, kwargs)

def test5(a, b, *args, c=3, **kwargs):
    print(a, b, c, args, kwargs)
    # 把这个函数求出来
    print(a + b + c + sum(args) + sum(kwargs.values()))


# test5(1, 2, 4, 4, 5, 6, 7, 8, 9, d=11, f=12)
test5(1, 2, 4, 4, 5, 6, 7, 8, 9, c=10, d=11, f=12)
